//给定一个Excel表格中的列名称，返回其相应的列序号。 
//
// 例如， 
//
//     A -> 1
//    B -> 2
//    C -> 3
//    ...
//    Z -> 26
//    AA -> 27
//    AB -> 28 
//    ...
// 
//
// 示例 1: 
//
// 输入: "A"
//输出: 1
// 
//
// 示例 2: 
//
// 输入: "AB"
//输出: 28
// 
//
// 示例 3: 
//
// 输入: "ZY"
//输出: 701 
//
// 致谢： 
//特别感谢 @ts 添加此问题并创建所有测试用例。 
// Related Topics 数学 
// 👍 173 👎 0

package leetcode.editor.cn;

import common.util.MyUtil;

/**
 * Java：Excel表列序号
 *
 * @author changgui
 */
@SuppressWarnings("all")
public class P171_ExcelSheetColumnNumber {
    public static void main(String[] args) {
        Solution solution = new P171_ExcelSheetColumnNumber().new Solution();
        MyUtil.print(solution.titleToNumber("AB"));
        MyUtil.print(solution.titleToNumber("ZY"));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    //class Solution {
    //    public int titleToNumber(String s) {
    //        int result = 0;
    //        int pow = 1;
    //        for (int i = 0; i < s.length(); i++) {
    //            result += (s.charAt(s.length() - 1 - i) - 'A' + 1) * pow;
    //            pow *= 26;
    //        }
    //        return result;
    //    }
    //}

    /**
     * "2019"的十进制
     * int res = 0;
     * res = res * 10 + 2; //2
     * res = res * 10 + 0; //20
     * res = res * 10 + 1; //201
     * res = res * 10 + 9; //2019
     *
     */
    class Solution {
        public int titleToNumber(String s) {
            int result = 0;
            for (int i = 0; i < s.length(); i++) {
                result = result * 26 + (s.charAt(i) - 'A' + 1);
            }
            return result;
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)

}